7c99c6
@@ -602,7 +602,9 @@
public class IteratorUtils {
     public static <E> Iterator<E> collatedIterator(final Comparator<? super E> comparator,
                                                    final Iterator<? extends E> iterator1,
                                                    final Iterator<? extends E> iterator2) {
-        return new CollatingIterator<E>(comparator, iterator1, iterator2);
+        @SuppressWarnings("unchecked")
+        final Comparator<E> comp = comparator == null ? ComparatorUtils.NATURAL_COMPARATOR : comparator;
+        return new CollatingIterator<E>(comp, iterator1, iterator2);
     }
 
     /**
@@ -623,7 +625,9 @@
public class IteratorUtils {
      */
     public static <E> Iterator<E> collatedIterator(final Comparator<? super E> comparator,
                                                    final Iterator<? extends E>... iterators) {
-        return new CollatingIterator<E>(comparator, iterators);
+        @SuppressWarnings("unchecked")
+        final Comparator<E> comp = comparator == null ? ComparatorUtils.NATURAL_COMPARATOR : comparator;
+        return new CollatingIterator<E>(comp, iterators);
     }
 
     /**
@@ -644,8 +648,10 @@
public class IteratorUtils {
      * @throws ClassCastException if the iterators collection contains the wrong object type
      */
     public static <E> Iterator<E> collatedIterator(final Comparator<? super E> comparator,
-            final Collection<Iterator<? extends E>> iterators) {
-        return new CollatingIterator<E>(comparator, iterators);
+                                                   final Collection<Iterator<? extends E>> iterators) {
+        @SuppressWarnings("unchecked")
+        final Comparator<E> comp = comparator == null ? ComparatorUtils.NATURAL_COMPARATOR : comparator;
+        return new CollatingIterator<E>(comp, iterators);
     }
 
     // Object Graph
